package tool;

import pojo.Evaluate;
import pojo.Movie;
import pojo.User;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

//读取工具类
public class ReaderUtil {
    //间隔符
    public static String SEPARATOR = "::";
    //读取文件转换成电影
    public static List<Movie> readMovie(String path) {
        //全程try-catch,一旦出问题就返回NULL

        try {
            //先读取
            String data = FileUtil.readFile(path);
            LogCat.d("读取的数据为:\n" + data);
            //按照行进行分割
            String[] lines = data.split("\n");
            //返回的数组
            List<Movie> movies = new ArrayList<>();
            //遍历行(每一个电影)
            for (String line : lines) {
                //检查当前行是否有分隔符
                if (!line.contains(SEPARATOR)) {
                    //没有分隔符,是无效行
                    LogCat.d("无效行:" + line);
                    continue;
                }
                //检查当前行是否有回车
                /* 无语了,这玩意卡我半天 */
                char fuck=13;
                if (line.contains(fuck+"")) {
                    //有\n,去除
                    line = line.replace(fuck+"", "");
                }
                //有分隔符,是有效行
                LogCat.d("有效行:" + line);
                String[] fields = line.split(SEPARATOR);
                movies.add( new Movie(
                        fields[0],
                        fields[1],
                        fields[2],
                        fields[3]));
            }
            return movies;
        } catch (Exception e) {
            LogCat.e("出现异常");
            return null;
        }
    }

    //读取文件转换成用户
    public static List<User> readUser(String path) {
        //全程try-catch,一旦出问题就返回NULL
        try {
            //先读取
            String data = FileUtil.readFile(path);
            LogCat.d("读取的数据为:\n" + data);
            //按照行进行分割
            String[] lines = data.split("\n");
            //返回的数组
            List<User> users = new ArrayList<>();

            //遍历行(每一个用户)
            for (String line : lines) {
                //检查当前行是否有分隔符
                if (!line.contains(SEPARATOR)) {
                    //没有分隔符,是无效行
                    LogCat.d("无效行:" + line);
                    continue;
                }
                //检查当前行是否有回车
                /* 无语了,这玩意卡我半天 */
                char fuck=13;
                if (line.contains(fuck+"")) {
                    //有\n,去除
                    line = line.replace(fuck+"", "");
                }
                //有分隔符,是有效行
                LogCat.d("有效行:" + line);
                String[] fields = line.split(SEPARATOR);
                users.add( new User(
                        fields[0],
                        fields[1],
                        fields[2],
                        fields[3]));

            }
            return users;
        }
        catch (Exception e) {
            LogCat.e("读取文件转换成用户出现异常");
            return null;
        }

    }

    //读取文件转换成评价
    public static List<Evaluate> readEvaluate(String path) {
        try {
            String data = FileUtil.readFile(path);
            LogCat.d("读取的数据为:\n" + data);
            String[] lines = data.split("\n");
            List<Evaluate> evaluates = new ArrayList<>();
            for (String line : lines) {
                if (!line.contains(SEPARATOR)) {

                    LogCat.d("无效行:" + line);
                    continue;
                }
                char fuck=13;
                if (line.contains(fuck+"")) {
                    line = line.replace(fuck+"", "");
                }
                LogCat.d("有效行:" + line);
                String[] fields = line.split(SEPARATOR);
                evaluates.add(new Evaluate(
                        fields[0],
                        fields[1],
                        fields[2],
                        fields[3]));


            }
            return evaluates;
        }catch (Exception e) {
            LogCat.e("读取文件转换成评价出现异常");
            return null;
        }
    }

    //读取一行字符串转换为电影

    //读取一行字符串转换为电影
    public static Movie readLine2Movie(String line) {
        // 检查当前行是否有分隔符
        if (!line.contains(SEPARATOR)) {
            // 没有分隔符, 返回null表示无效行
            return null;
        }

        // 去除可能存在的回车符（这里使用更通用的方式去除\r\n）
        line = line.replace("\r\n", "").replace("\r", "").replace("\n", "");

        // 分割字符串
        String[] fields = line.split(SEPARATOR);

        // 根据字段创建Movie对象（假设Movie的构造函数接受四个参数）
        return new Movie(fields[0], fields[1], fields[2], fields[3]);
    }

    //读取一行字符串转换为用户
    public static User readLine2User(String line) {
        // 检查当前行是否有分隔符
        if (!line.contains(SEPARATOR)) {
            // 没有分隔符, 返回null表示无效行
            return null;
        }

        // 去除可能存在的回车符（这里使用更通用的方式去除\r\n）
        line = line.replace("\r\n", "").replace("\r", "").replace("\n", "");

        // 分割字符串
        String[] fields = line.split(SEPARATOR);

        // 根据字段创建User对象（假设User的构造函数接受四个参数）
        return new User(fields[0], fields[1], fields[2], fields[3]);
    }

    //读取一行字符串转换为评价
    public static Evaluate readLine2Evaluate(String line) {
        // 检查当前行是否有分隔符
        if (!line.contains(SEPARATOR)) {
            // 没有分隔符, 返回null表示无效行
            return null;
        }

        // 去除可能存在的回车符（这里使用更通用的方式去除\r\n）
        line = line.replace("\r\n", "").replace("\r", "").replace("\n", "");

        // 分割字符串
        String[] fields = line.split(SEPARATOR);

        // 根据字段创建Evaluate对象（假设Evaluate的构造函数接受四个参数）
        return new Evaluate(fields[0], fields[1], fields[2], fields[3]);
    }
}
